# modules/about.py

import tkinter as tk
import ttkbootstrap as tb

from src.utils.dialogCenterUtil import center_dialog


class AppInfoBar(tb.Frame):
    def __init__(self, master=None, **kwargs):
        super().__init__(master, **kwargs)

        self.metadata = {
            'author': 'CSH215',
            'date': '2025-07-19 (乙巳荷月)',
            'version': '1.1.2',
            'copyright': '© CSH215 All Rights Reserved.',
            'notice': '本软件仅供内部学习交流使用，禁止网络传播和商业使用。'
        }

        # 新增属性记录“关于”弹窗
        self.about_dialog = None

        # 固定高度 & 防止布局塌陷
        self.configure(height=30)
        self.pack_propagate(False)

        # 设置样式
        style = tb.Style()
        style.configure("Footer.TFrame", background="#f0f4ff")
        self.configure(style="Footer.TFrame")

        # 显示信息文本
        self.info_label = tb.Label(
            self,
            text=self._get_info_text(),
            anchor='w',
            font=('微软雅黑', 9),
            foreground='#333',
            background='#f0f4ff'
        )
        self.info_label.pack(fill='x', padx=10)

        # 点击弹出关于窗口
        self.bind("<Button-1>", self.show_about_dialog)
        self.info_label.bind("<Button-1>", self.show_about_dialog)

    def _get_info_text(self):
        return (
            f"作者：{self.metadata['author']}    "
            f"更新日期：{self.metadata['date']}    "
            f"版本：{self.metadata['version']}    "
            f"{self.metadata['notice']}"
        )

    def show_about_dialog(self, event=None):
        """显示关于对话框，限制同时只能打开一个"""
        if hasattr(self, 'about_dialog') and self.about_dialog and self.about_dialog.winfo_exists():
            self.about_dialog.lift()
            return

        self.about_dialog = AboutDialog(self.master)


class AboutDialog(tk.Toplevel):
    def __init__(self, master=None):
        super().__init__(master)
        self.title("关于 CSH Excel Tool")
        self.geometry("400x200")
        self.resizable(False, False)

        # 居中显示在主窗口中央
        try:
            self.after(100, lambda: center_dialog(self, master, 400, 200))
        except Exception as e:
            print("居中失败:", e)

        info_text = (
            "CSH Excel Tool\n"
            "版本：1.1.2\n"
            "作者：CSH215\n"
            "更新日期：2025-07-19 (乙巳荷月)\n"
            "开发日期：2025-07-09 (乙巳荷月)\n"
            "描述：用于处理抖店客户信息Excel的工具\n"
            "本软件仅供内部学习交流使用，禁止网络传播和商业使用。"
        )

        tb.Label(
            self,
            text=info_text,
            justify='left',
            padding=10,
            font=('微软雅黑', 10)
        ).pack(expand=True)

        # ✅ 刷新布局
        self.update_idletasks()
